﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;

namespace DomainDriver.DomainModeling.DomainModels.ConstructionResources
{
    internal class RepositoryConstructionSpecification
    {
        private Type m_DotNetKeyType;
        private Type m_DatabaseKeyType;
        private Type m_DomainObjectType;
        private Expression m_ConstructionMethod;

        internal RepositoryConstructionSpecification(Type dotNetKeyType, Type databaseKeyType, Type domainObjectType, Expression domainObjectConstructionMethod)
        {
            m_DotNetKeyType = dotNetKeyType;
            m_DatabaseKeyType = databaseKeyType;
            m_DomainObjectType = domainObjectType;
            m_ConstructionMethod = domainObjectConstructionMethod;
        }

        public Type DotNetKeyType
        {
            get { return m_DotNetKeyType; }
        }

        public Type DatabaseKeyType
        {
            get { return m_DatabaseKeyType; }
        }

        public Type DomainObjectType
        {
            get { return m_DomainObjectType; }
        }

        public Expression ConstructionMethod
        {
            get { return m_ConstructionMethod; }
        }
    }
}